// cf-512(r290)-e
// 题意：
//
// 题解：http://codeforces.com/blog/entry/16173?#comment-210846
//
// run: $exec < input
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>

int const maxn = 1001;

struct data
{
	bool poly[maxn][maxn];
} p1, p2;

int n, m;
std::vector<std::pair<int, int>> ans;
std::vector<std::pair<int, int>> rev_ans;

std::istream & operator>>(std::istream & is, data & p)
{
	for (int i = 0, x, y; i < n - 3; i++) {
		is >> x >> y;
		x--; y--;
		p.poly[x][y] = p.poly[y][x] = true;
	}
	for (int i = 0; i < n; i++)
		p.poly[i][(i + 1) % n] = p.poly[(i + 1) % n][i] = true;
	return is;
}

void transform(data & p, bool forward)
{
	for (int i = 0; i < n - 2; i++) {
		bool ordered = true;
		int last = 1, j = 2;
		for (; j < n; j++)
			if (p.poly[0][j]) {
				if (last + 1 != j) { ordered = false; break; }
				last = j;
			}
		if (ordered) break;

		int k = 2;
		for (; k < n; k++)
			if (p.poly[k][last] && p.poly[k][j]) break;

		if (forward)
			ans.push_back(std::make_pair(last, j));
		else
			rev_ans.push_back(std::make_pair(0, k));
		p.poly[last][j] = p.poly[j][last] = false;
		p.poly[k][0] = p.poly[0][k] = true;
	}
}

int main()
{
	std::ios::sync_with_stdio(false);
	std::cin >> n;
	std::cin >> p1 >> p2;
	transform(p1, true);
	transform(p2, false);

	std::reverse(rev_ans.begin(), rev_ans.end());
	std::copy(rev_ans.begin(), rev_ans.end(), std::back_inserter(ans));
	std::cout << ans.size() << '\n';
	for (auto i : ans)
		std::cout << i.first + 1 << ' ' << i.second + 1 << '\n';
}

